//package com.dc.common.aop;
//
//import java.io.InputStream;
//import java.util.List;
//import java.util.Properties;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpSession;
//
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Before;
//import org.aspectj.lang.annotation.Pointcut;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import com.dc.base.exception.BusinessException;
//import com.dc.common.constants.ConstantsCommon;
//import com.dc.common.em.EnumOperationModule;
//import com.dc.common.model.BaseModel;
//import com.dc.system.model.SystemRolePermission;
//import com.dc.system.model.SystemUser;
//import com.dc.system.service.UserService;
//
///**
// * 权限验证切面
// * @author Shen
// * @date 2018年4月9日 下午1:58:21
// */
//@Component
//@Aspect
//public class AuthorityOperationAspect {
//
//	@Autowired
//	private UserService sysUserService;
//
//	@Pointcut("@annotation(com.dc.common.aop.AuthorityAop)")
//	public void controllerAspect() {
//	}
//
//	@Before("controllerAspect() && @annotation(data)")
//	public void doBefore(JoinPoint point, AuthorityAop data) throws Throwable {
//		// 获取request以及seesion
//		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
//				.getRequest();
//		HttpSession session = request.getSession();
//		
//		// 获取baseModel
//		BaseModel baseModel = new BaseModel();
//		if (point.getArgs() != null) {
//			for (Object obj : point.getArgs()) {
//				if (obj.getClass() == BaseModel.class) {
//					baseModel = (BaseModel) obj;
//					break;
//				}
//			}
//		}
//
//		// 获得当前用户
//		SystemUser systemUser = (SystemUser) session.getAttribute(ConstantsCommon.LOGIN_USERINFO);
//		if (systemUser == null) {
//			throw new BusinessException(9,"登陆超时，请重新登陆");
//		} else {
//			// sysRole_Permissions放置权限list
//			List<SystemRolePermission> systemRolePermissions = null;
//			baseModel = sysUserService.getUserPermission(baseModel, request);
//			systemRolePermissions = (List<SystemRolePermission>) baseModel.getData();
//			//判断权限是否成功
//			boolean flag = false;
//			String roleValue = "";
//			String searchRole = "";
//			// 权限比较设置（因为可能一个用户存在多个角色的情况，所以只要不等于0即可）
//			if (systemRolePermissions.size() > 0) {
//				for (SystemRolePermission sysRole_Permission : systemRolePermissions) {
//					if ((data.module().getCode() + "").equals(sysRole_Permission.getCode())) {
//						int num = data.module().getNumByCodeType(data.module().getCode(), data.type());
//						if ('0' != sysRole_Permission.getPermission_value().charAt(num)) {
//							roleValue = sysRole_Permission.getPermission_value();
//							flag = true;
//							break;
//						}
//					}
//				}
//			}
//			
//			if(flag&&ConstantsCommon.FUN_SEARCH.equals(data.type())){
//				int search_ALL = EnumOperationModule.getNumByCodeType(data.module().getCode(),
//						ConstantsCommon.FUN_SEARCH_ALL);
//				int search_ORGAN = EnumOperationModule.getNumByCodeType(data.module().getCode(),
//						ConstantsCommon.FUN_SEARCH_ORGAN);
//				int search_DEPT = EnumOperationModule.getNumByCodeType(data.module().getCode(),
//						ConstantsCommon.FUN_SEARCH_DEPT);
//				int search_PERSONAL = EnumOperationModule.getNumByCodeType(data.module().getCode(),
//						ConstantsCommon.FUN_SEARCH_PERSONAL);
//				
//				//（因为可能一个用户存在多个角色的情况，所以只要不等于0即可）
//				if (search_ALL > -1 && roleValue.charAt(search_ALL) != '0') {// 查全
//					searchRole = ConstantsCommon.FUN_SEARCH_ALL;
//				} else if (search_ORGAN > -1 && roleValue.charAt(search_ORGAN) != '0') {// 查单位
//					searchRole = ConstantsCommon.FUN_SEARCH_ORGAN;
//				} else if (search_DEPT > -1 && roleValue.charAt(search_DEPT) != '0') {// 查派部门
//					searchRole = ConstantsCommon.FUN_SEARCH_DEPT;
//				} else if (search_PERSONAL > -1 && roleValue.charAt(search_PERSONAL) != '0') {// 查私
//					searchRole = ConstantsCommon.FUN_SEARCH_PERSONAL;
//				} else {
//					throw new BusinessException(8,"对不起，查询权限出错！");
//				}
//				baseModel.setSearchRole(searchRole);
//				baseModel.setRoleValue(roleValue);
//			}
//
//		}
//		
//	}
//}
